WinSCPがIAMロールを用いたS3接続に対応していました

WinSCPがIAMロールを用いたS3接続に対応していました

IAM アクセスキーを使わなくてもS3に接続できます
Clock Icon2024.07.16

こんにちは、なおにしです。

EC2で立ち上げたWindows Serverから手軽にS3に接続したい要件があったためWinSCPをインストールしたところ、IAMロールを用いたS3接続に対応していたためご紹介します。

はじめに

WinSCPではIAM アクセスキーを利用してS3に接続することが可能です。こちらの内容は弊社の過去ブログでも取り上げられています。

https://dev.classmethod.jp/articles/connected-to-s3-with-winscp/

いつ頃からS3に接続できるようになったのか調べてみると、なんと2017年末頃のようなので、IAM アクセスキーを利用したS3接続が可能であることはご存知の方も多いかもしれません。

私も今年1月頃にWinSCPをインストールした際はアクセスキーを設定した記憶があるので、IAMロールに対応したのは割と最近のようです。

確認してみると、2023年10月5日リリースのバージョン6.2 ベータから適用されていました。ただ、バージョン6.2台は全てベータ版またはRC版になっているため、正式版としては2024年2月14日リリースの6.3からのようです。

20240716_naonishi_connected-to-s3-with-winscp-iam-role_1

ドキュメントにもAWS環境の認証情報(IAMロール)に関する内容の記載があります。

With S3 protocol you can use Credentials from AWS environment. The discovered credentials will be show in the respective boxes, but they won’t be saved. They will be read again each time you login.

期待どおり、IAMロールを使用した場合は認証情報はサーバに保存されないと明記されています。
というわけで、実際にEC2(Windows)にインストールしたWinSCPからIAMロール認証でS3に接続してみます。

やってみた

事前準備

こちらの手順[1-1.S3バケット作成]と同様にS3バケットを作成します。今回は「winscp-iam-role-test」バケットを作成しました。

EC2にアタッチするIAMロールには以下の以下のIAMポリシーを設定します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::winscp-iam-role-test",
                "arn:aws:s3:::winscp-iam-role-test/*"
            ]
        }
    ]
}

WinSCPはこちらからダウンロードしてインストールします。今回はバージョン[6.3.4]を使用しました。

WinSCPの設定

WinSCPを起動します。以下のログイン設定ウィンドウが表示されるので、転送プロトコルとして[Amazon S3]を選択します。

20240716_naonishi_connected-to-s3-with-winscp-iam-role_2

S3への接続設定のための項目が表示されます。[AWS 環境への認証情報]という項目が追加されていますので、こちらのチェックボックスをONにします。

20240716_naonishi_connected-to-s3-with-winscp-iam-role_3

すると、アクセスキーとシークレットキーが自動で入力されて編集不可になりました。IAMロールによって取得された一時的な認証情報が表示されるようです。また、チェックボックスの隣にドロップダウンリストが選択できるようになっていますが、今回の環境では[一般]しか選択できませんでした。こちらについては本記事の末尾で補足します。

続いて[設定]ボタンを押下します。

20240716_naonishi_connected-to-s3-with-winscp-iam-role_4

[環境]-[ディレクトリ]の設定で[リモートディレクトリ]に今回作成したS3バケットのパスを入力します。

20240716_naonishi_connected-to-s3-with-winscp-iam-role_5

[環境]-[S3]の設定を表示してみると、[セッショントークン]が既に入力されて編集不可になっていることが分かります。特に設定する箇所は無いため[OK]ボタンを押下します。

20240716_naonishi_connected-to-s3-with-winscp-iam-role_6

設定を保存します。[セッションの保存名]は今回作成したバケット名にしました。また、[デスクトップにショートカットを作成]という便利そうなチェックボックスがあったのでONにしてみます。

20240716_naonishi_connected-to-s3-with-winscp-iam-role_7

設定が保存されて、ショートカットが作成されました。せっかくなので一度WinSCPを閉じてデスクトップのショートカットから起動してみます。

20240716_naonishi_connected-to-s3-with-winscp-iam-role_8

S3接続確認

ショートカットをダブルクリックするとすぐにS3接続されました。便利ですね。

20240716_naonishi_connected-to-s3-with-winscp-iam-role_9

テキストファイルを作成してドラッグ&ドロップでとても簡単にS3にアップロードができました。

20240716_naonishi_connected-to-s3-with-winscp-iam-role_10

もちろんS3のコンソールからも確認できます。

20240716_naonishi_connected-to-s3-with-winscp-iam-role_11

補足

[AWS 環境への認証情報]チェックボックスの隣のドロップダウンリストについては、サーバ上でプロファイル(~/.aws/credentials)を設定していれば自動的にそれを読み込んで選択できるようです。今回は設定していなかっため、以下のとおり[一般]しか選択できませんでした。

20240716_naonishi_connected-to-s3-with-winscp-iam-role_12

ただ、こちらの機能は執筆時点では未リリースのバージョン6.4に含まれる機能のようなので、今回は触れません。

まとめ

昔からお世話になっていたWinSCPが今なお改善と進化を続けていることに感動しました。補足に記載のとおりまだまだ機能が拡充されていくようです。
EC2上でWinSCPを利用されている方で、IAM アクセスキーを用いたS3接続をされている方がいましたら、WinSCPをアップデートすることでアクセスキーを埋め込まずに運用できるようになるかと思います。
本記事がどなたかのお役に立てれば幸いです。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.